### Justin Kirkland 
### Scott Clifford
### Beth Simas
### SEM Model of Ambition
### Estimated on
### R Studio Version 1.0.136
### Lavaan version 0.5-20
############################

#begin
rm(list=ls())
set.seed(1111)

#library
library(foreign)
library(arm)
library(lavaan)
library(readstata13)

#data; this data has all of Scott's changed made to it.
data<-read.dta13("ambition_yougov_replicationdata_clean.dta")

#Recode education
data$educ2<-ifelse(data$educ=="No HS", 0, 1)
data$educ2<-ifelse(data$educ=="High School graduate", 1, data$educ2)
data$educ2<-ifelse(data$educ=="Some college", 2, data$educ2)
data$educ2<-ifelse(data$educ=="2-year", 3, data$educ2)
data$educ2<-ifelse(data$educ=="4-year", 4, data$educ2)
data$educ2<-ifelse(data$educ=="Post-grad", 5, data$educ2)

#Recode income
data$inc2<-ifelse(data$inc4miss==2, 1, 0)
data$inc3<-ifelse(data$inc4miss==3, 1, 0)
data$inc4<-ifelse(data$inc4miss==4, 1, 0)
data$inc5<-ifelse(data$inc4miss==5, 1, 0)

#Recode Empathy Questions as numeric
data$Q17_1<-as.numeric(data$Q17_1)
data$Q17_2<-as.numeric(data$Q17_2)
data$Q17_3<-as.numeric(data$Q17_3)
data$Q17_4<-as.numeric(data$Q17_4)
data$Q17_5<-as.numeric(data$Q17_5)
data$Q17_6<-as.numeric(data$Q17_6)
data$Q17_7<-as.numeric(data$Q17_7)
data$Q17_8<-as.numeric(data$Q17_8)
data$Q17_9<-as.numeric(data$Q17_9)
data$Q17_10<-as.numeric(data$Q17_10)
data$Q17_11<-as.numeric(data$Q17_11)
data$Q17_12<-as.numeric(data$Q17_12)
data$Q17_13<-as.numeric(data$Q17_13)
data$Q17_14<-as.numeric(data$Q17_14)
data$Q17_15<-as.numeric(data$Q17_15)
data$Q17_16<-as.numeric(data$Q17_16)
data$Q17_17<-as.numeric(data$Q17_17)
data$Q17_18<-as.numeric(data$Q17_18)
data$Q17_19<-as.numeric(data$Q17_19)
data$Q17_20<-as.numeric(data$Q17_20)
data$Q17_21<-as.numeric(data$Q17_21)
data$Q17_22<-as.numeric(data$Q17_22)
data$Q17_23<-as.numeric(data$Q17_23)
data$Q17_24<-as.numeric(data$Q17_24)
data$Q17_25<-as.numeric(data$Q17_25)
data$Q17_26<-as.numeric(data$Q17_26)
data$Q17_27<-as.numeric(data$Q17_27)
data$Q17_28<-as.numeric(data$Q17_28)

#Record TIPI questions as numeric
data$Q18_1<-as.numeric(data$Q18_1)
data$Q18_2<-as.numeric(data$Q18_2)
data$Q18_2a<-ifelse(data$Q18_2==7, 1, NA)
data$Q18_2a<-ifelse(data$Q18_2==6, 2, data$Q18_2a)
data$Q18_2a<-ifelse(data$Q18_2==5, 3, data$Q18_2a)
data$Q18_2a<-ifelse(data$Q18_2==4, 4, data$Q18_2a)
data$Q18_2a<-ifelse(data$Q18_2==3, 5, data$Q18_2a)
data$Q18_2a<-ifelse(data$Q18_2==2, 6, data$Q18_2a)
data$Q18_2a<-ifelse(data$Q18_2==1, 7, data$Q18_2a)
data$Q18_3<-as.numeric(data$Q18_3)
data$Q18_4<-as.numeric(data$Q18_4)
data$Q18_4a<-ifelse(data$Q18_4==7, 1, NA)
data$Q18_4a<-ifelse(data$Q18_4==6, 2, data$Q18_4a)
data$Q18_4a<-ifelse(data$Q18_4==5, 3, data$Q18_4a)
data$Q18_4a<-ifelse(data$Q18_4==4, 4, data$Q18_4a)
data$Q18_4a<-ifelse(data$Q18_4==3, 5, data$Q18_4a)
data$Q18_4a<-ifelse(data$Q18_4==2, 6, data$Q18_4a)
data$Q18_4a<-ifelse(data$Q18_4==1, 7, data$Q18_4a)
data$Q18_5<-as.numeric(data$Q18_5)
data$Q18_6<-as.numeric(data$Q18_6)
data$Q18_6a<-ifelse(data$Q18_6==7, 1, NA)
data$Q18_6a<-ifelse(data$Q18_6==6, 2, data$Q18_6a)
data$Q18_6a<-ifelse(data$Q18_6==5, 3, data$Q18_6a)
data$Q18_6a<-ifelse(data$Q18_6==4, 4, data$Q18_6a)
data$Q18_6a<-ifelse(data$Q18_6==3, 5, data$Q18_6a)
data$Q18_6a<-ifelse(data$Q18_6==2, 6, data$Q18_6a)
data$Q18_6a<-ifelse(data$Q18_6==1, 7, data$Q18_6a)
data$Q18_7<-as.numeric(data$Q18_7)
data$Q18_8<-as.numeric(data$Q18_8)
data$Q18_8a<-ifelse(data$Q18_8==7, 1, NA)
data$Q18_8a<-ifelse(data$Q18_8==6, 2, data$Q18_8a)
data$Q18_8a<-ifelse(data$Q18_8==5, 3, data$Q18_8a)
data$Q18_8a<-ifelse(data$Q18_8==4, 4, data$Q18_8a)
data$Q18_8a<-ifelse(data$Q18_8==3, 5, data$Q18_8a)
data$Q18_8a<-ifelse(data$Q18_8==2, 6, data$Q18_8a)
data$Q18_8a<-ifelse(data$Q18_8==1, 7, data$Q18_8a)
data$Q18_9<-as.numeric(data$Q18_9)
data$Q18_10<-as.numeric(data$Q18_10)
data$Q18_10a<-ifelse(data$Q18_10==7, 1, NA)
data$Q18_10a<-ifelse(data$Q18_10==6, 2, data$Q18_10a)
data$Q18_10a<-ifelse(data$Q18_10==5, 3, data$Q18_10a)
data$Q18_10a<-ifelse(data$Q18_10==4, 4, data$Q18_10a)
data$Q18_10a<-ifelse(data$Q18_10==3, 5, data$Q18_10a)
data$Q18_10a<-ifelse(data$Q18_10==2, 6, data$Q18_10a)
data$Q18_10a<-ifelse(data$Q18_10==1, 7, data$Q18_10a)

#Code up Big 5
data$extrav<-(data$Q18_1+data$Q18_6a-2)/12
data$agreeb<-(data$Q18_2a+data$Q18_7-2)/12
data$conscie<-(data$Q18_3+data$Q18_8a-2)/12
data$neurot<-(data$Q18_4a+data$Q18_9-2)/12
data$openn<-(data$Q18_5+data$Q18_10a-2)/12

#Code Political interest
data$pol.int<-abs(4-as.numeric(data$Q14))

#Recode Oversample variable
data$oversample2<-ifelse(data$oversample=="Yes", 1, 0)

##################################
####Figure 2 Path Coefficients####
##################################
#SEM
Ambition.model<-'
#Measurement Model
emp.conc=~Q17_2+Q17_4+Q17_9+Q17_14+Q17_18+Q17_20+Q17_22                
emp.fant=~Q17_1+Q17_5+Q17_7+Q17_12+Q17_16+Q17_23+Q17_26
emp.pers=~Q17_3+Q17_8+Q17_11+Q17_15+Q17_21+Q17_25+Q17_28
emp.dist=~Q17_6+Q17_10+Q17_13+Q17_17+Q17_19+Q17_24+Q17_27
barrier.policy=~barrierpolicy+barrierconstit+barrierstatus+barrierargue+barrierbargain
barrier.debate=~barrierdebate+barrierdoor+barrierargue
barrier.neg=~barriertarget+barriernegcamp+barrierprivate
amb.ind=~ambschool+ambcity+ambmayor+ambstate+ambgov+ambhouse+ambsen

#regression models
barrier.policy~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+a*emp.dist
barrier.debate~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+b*emp.dist
barrier.neg~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+c*emp.dist
amb.ind~e*barrier.policy+f*barrier.debate+g*barrier.neg+pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+d*emp.dist


#residual correlations
barrier.policy~~barrier.debate
barrier.debate~~barrier.neg


#effect measures
IDE1:= (a*e)
IDE2:= (b*f)
IDE3:= (c*g)
IDE:= (a*e)+(b*f)+(c*g)
DE1:= d
total:= d+(a*e)+(b*f)+(c*g) 

'

fit2<-sem(Ambition.model, data=data[which(data$oversample=="No"),], ordered("barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barriernegcamp, barriertarget, barrierprivate, Q17_1, Q17_2, Q17_3, Q17_4, Q17_5, Q17_6, Q17_7, Q17_8, Q17_9, Q17_10, Q17_11, Q17_12, Q17_13, Q17_14, Q17_15, Q17_16, Q17_17, Q17_18, Q17_19, Q17_20, Q17_21, Q17_22, Q17_23, Q17_24, Q17_25, Q17_26, Q17_27, Q17_28"), meanstructure=TRUE)

################################
###Results of the model!########
#Shows Coefficients in Figure 2#
################################
summary(fit2, fit=T)

##############################
###Start to build up Figure 3#
#Effects of Each Dimension####
###############################
#Distress
IDE.pol1<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="a")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="e")]

IDE.deb1<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="b")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="f")]

IDE.neg1<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="c")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="g")]

IDE.tot1<-IDE.pol1+IDE.deb1+IDE.neg1

DE1<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="d")]


###################
#PT

#SEM
Ambition.model<-'
#Measurement Model
emp.conc=~Q17_2+Q17_4+Q17_9+Q17_14+Q17_18+Q17_20+Q17_22                
emp.fant=~Q17_1+Q17_5+Q17_7+Q17_12+Q17_16+Q17_23+Q17_26
emp.pers=~Q17_3+Q17_8+Q17_11+Q17_15+Q17_21+Q17_25+Q17_28
emp.dist=~Q17_6+Q17_10+Q17_13+Q17_17+Q17_19+Q17_24+Q17_27
barrier.policy=~barrierpolicy+barrierconstit+barrierstatus+barrierargue+barrierbargain
barrier.debate=~barrierdebate+barrierdoor+barrierargue
barrier.neg=~barriertarget+barriernegcamp+barrierprivate
amb.ind=~ambschool+ambcity+ambmayor+ambstate+ambgov+ambhouse+ambsen

#regression models
barrier.policy~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+a*emp.pers+emp.dist
barrier.debate~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+b*emp.pers+emp.dist
barrier.neg~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+c*emp.pers+emp.dist
amb.ind~e*barrier.policy+f*barrier.debate+g*barrier.neg+pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+d*emp.pers+emp.dist


#residual correlations
barrier.policy~~barrier.debate
barrier.debate~~barrier.neg


#effect measures
IDE1:= (a*e)
IDE2:= (b*f)
IDE3:= (c*g)
IDE:= (a*e)+(b*f)+(c*g)
DE1:= d
total:= d+(a*e)+(b*f)+(c*g) 

'

fit2<-sem(Ambition.model, data=data[which(data$oversample=="No"),], ordered("barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barriernegcamp, barriertarget, barrierprivate, Q17_1, Q17_2, Q17_3, Q17_4, Q17_5, Q17_6, Q17_7, Q17_8, Q17_9, Q17_10, Q17_11, Q17_12, Q17_13, Q17_14, Q17_15, Q17_16, Q17_17, Q17_18, Q17_19, Q17_20, Q17_21, Q17_22, Q17_23, Q17_24, Q17_25, Q17_26, Q17_27, Q17_28"), meanstructure=TRUE)
summary(fit2, fit=T)

IDE.pol2<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="a")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="e")]

IDE.deb2<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="b")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="f")]

IDE.neg2<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="c")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="g")]

IDE.tot2<-IDE.pol2+IDE.deb2+IDE.neg2

DE2<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="d")]


###################
#EC

#SEM
Ambition.model<-'
#Measurement Model
emp.conc=~Q17_2+Q17_4+Q17_9+Q17_14+Q17_18+Q17_20+Q17_22                
emp.fant=~Q17_1+Q17_5+Q17_7+Q17_12+Q17_16+Q17_23+Q17_26
emp.pers=~Q17_3+Q17_8+Q17_11+Q17_15+Q17_21+Q17_25+Q17_28
emp.dist=~Q17_6+Q17_10+Q17_13+Q17_17+Q17_19+Q17_24+Q17_27
barrier.policy=~barrierpolicy+barrierconstit+barrierstatus+barrierargue+barrierbargain
barrier.debate=~barrierdebate+barrierdoor+barrierargue
barrier.neg=~barriertarget+barriernegcamp+barrierprivate
amb.ind=~ambschool+ambcity+ambmayor+ambstate+ambgov+ambhouse+ambsen

#regression models
barrier.policy~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+a*emp.conc+emp.pers+emp.dist
barrier.debate~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+b*emp.conc+emp.pers+emp.dist
barrier.neg~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+c*emp.conc+emp.pers+emp.dist
amb.ind~e*barrier.policy+f*barrier.debate+g*barrier.neg+pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+d*emp.conc+emp.pers+emp.dist


#residual correlations
barrier.policy~~barrier.debate
barrier.debate~~barrier.neg


#effect measures
IDE1:= (a*e)
IDE2:= (b*f)
IDE3:= (c*g)
IDE:= (a*e)+(b*f)+(c*g)
DE1:= d
total:= d+(a*e)+(b*f)+(c*g) 

'

fit2<-sem(Ambition.model, data=data[which(data$oversample=="No"),], ordered("barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barriernegcamp, barriertarget, barrierprivate, Q17_1, Q17_2, Q17_3, Q17_4, Q17_5, Q17_6, Q17_7, Q17_8, Q17_9, Q17_10, Q17_11, Q17_12, Q17_13, Q17_14, Q17_15, Q17_16, Q17_17, Q17_18, Q17_19, Q17_20, Q17_21, Q17_22, Q17_23, Q17_24, Q17_25, Q17_26, Q17_27, Q17_28"), meanstructure=TRUE)
summary(fit2, fit=T)

IDE.pol3<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="a")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="e")]

IDE.deb3<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="b")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="f")]

IDE.neg3<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="c")]*parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="g")]

IDE.tot3<-IDE.pol3+IDE.deb3+IDE.neg3

DE3<-parameterEstimates(fit2)$est[which(parameterEstimates(fit2)$label=="d")]


#Store all effects in one place
effects<-c(IDE.pol1, IDE.pol2, IDE.pol3, IDE.deb1, IDE.deb2, IDE.deb3, IDE.neg1, IDE.neg2, IDE.neg3)
color<-c("dimgrey", "black", "light grey", "dimgrey", "black", "light grey", "dimgrey", "black", "light grey")
groups<-c("Policy", "Policy", "Policy", "Debate", "Debate", "Debate", "Negativity", "Negativity", "Negativity")
dims<-c("Personal Distress", "Perspective Taking", "Empathic Concern", "Personal Distress", "Perspective Taking", "Empathic Concern", "Personal Distress", "Perspective Taking", "Empathic Concern")

##############################
#Create Graphic Figure 3######
##############################

#pdf("IDE.pdf", width=10)
barplot(effects, xaxt="n", xlab="", ylab="Effects on Ambition", ylim=c(-0.06, 0.06), main="Indirect Effects of Empathy on Ambition", col=color)
abline(h=0, col="grey80", lty=3, lwd=0.8)
abline(h=0.02, col="grey80", lty=3, lwd=0.8)
abline(h=-0.02, col="grey80", lty=3, lwd=0.8)
abline(h=0.04, col="grey80", lty=3, lwd=0.8)
abline(h=-0.04, col="grey80", lty=3, lwd=0.8)
abline(h=0.06, col="grey80", lty=3, lwd=0.8)
abline(h=-0.06, col="grey80", lty=3, lwd=0.8)
abline(v=(1.85+5.65)/2, lty=2)
abline(v=(9.05+5.65)/2, lty=2)
axis(1, at=c(1.85,5.65, 9.05), labels=c("Indirect Effect \nThrough Policy", "Indirect Effect \nThrough Debate", "Indirect Effect \nThrough Negativity"), cex.axis=0.75, tick=F)
legend("topleft", inset=0.01, c("Personal Distress", "Perspective-Taking", "Empathic Concern"), lty=c(1,1,1), lwd=c(2,2,2), col=c("dimgrey", "black", "grey"), cex=0.8)
#dev.off()


################################
##Create Figure 4###############
################################


#SEM
Ambition.model<-'
#Measurement Model
emp.conc=~Q17_2+Q17_4+Q17_9+Q17_14+Q17_18+Q17_20+Q17_22                
emp.fant=~Q17_1+Q17_5+Q17_7+Q17_12+Q17_16+Q17_23+Q17_26
emp.pers=~Q17_3+Q17_8+Q17_11+Q17_15+Q17_21+Q17_25+Q17_28
emp.dist=~Q17_6+Q17_10+Q17_13+Q17_17+Q17_19+Q17_24+Q17_27
barrier.policy=~barrierpolicy+barrierconstit+barrierstatus+barrierargue+barrierbargain
barrier.debate=~barrierdebate+barrierdoor+barrierargue
barrier.neg=~barriertarget+barriernegcamp+barrierprivate
amb.ind=~ambschool+ambcity+ambmayor+ambstate+ambgov+ambhouse+ambsen

#regression models
barrier.policy~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+a*emp.dist
barrier.debate~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+b*emp.dist
barrier.neg~pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+c*emp.dist
amb.ind~e*barrier.policy+f*barrier.debate+g*barrier.neg+pidext+educ2+inc2+inc3+inc4+inc5+male+black+hisp+otherrace+age+married+full_employ+emp.fant+emp.conc+emp.pers+d*emp.dist


#residual correlations
barrier.policy~~barrier.debate
barrier.debate~~barrier.neg


#effect measures
IDE:= (a*e)+(b*f)+(c*g)
total:= d+(a*e)+(b*f)+(c*g) 

'

fit2<-sem(Ambition.model, data=data[which(data$oversample=="No"),], ordered("barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barrierpolicy, barrierconstit, barrierstatus, barrierargue, barrierbargain, barriernegcamp, barriertarget, barrierprivate, Q17_1, Q17_2, Q17_3, Q17_4, Q17_5, Q17_6, Q17_7, Q17_8, Q17_9, Q17_10, Q17_11, Q17_12, Q17_13, Q17_14, Q17_15, Q17_16, Q17_17, Q17_18, Q17_19, Q17_20, Q17_21, Q17_22, Q17_23, Q17_24, Q17_25, Q17_26, Q17_27, Q17_28"), meanstructure=TRUE)
summary(fit2, fit=T)

x.1<-lavPredict(fit2)
range(x.1[,8])

men<-mean(x.1[which(lavInspect(fit2, what="data")[,which(lavNames(fit2)=="male")]==1),8])
women<-mean(x.1[which(lavInspect(fit2, what="data")[,which(lavNames(fit2)=="male")]==0),8])

gen<-women-men

no.c<-x.1[which(x.1[,1]==min(x.1[,1])),8]
all.c<-x.1[which(x.1[,1]==max(x.1[,1])),8]

diff.c<-all.c-no.c

no.p<-x.1[which(x.1[,3]==min(x.1[,3])),8]
all.p<-x.1[which(x.1[,3]==max(x.1[,3])),8]

diff.p<-all.p-no.p

no.d<-x.1[which(x.1[,4]==min(x.1[,4])),8]
all.d<-x.1[which(x.1[,4]==max(x.1[,4])),8]

diff.d<-all.d-no.d
x.d<-sample(x.1[,8], 1000, replace=T)-sample(x.1[,8], 1000, replace=T)

ext<-mean(x.1[which(lavInspect(fit2, what="data")[,which(lavNames(fit2)=="pidext")]==3),8])
mod<-mean(x.1[which(lavInspect(fit2, what="data")[,which(lavNames(fit2)=="pidext")]==0),8])
diff.e<-mod-ext

h.e<-mean(x.1[which(lavInspect(fit2, what="data")[,which(lavNames(fit2)=="educ2")]==5),8])
l.e<-mean(x.1[which(lavInspect(fit2, what="data")[,which(lavNames(fit2)=="educ2")]==0),8])
diff.f<-l.e-h.e


#pdf("MW_SEM.pdf", width=10)
barplot(c(diff.d, diff.p, diff.c, gen, diff.e, diff.f), xaxt="n", xlab="", ylab="Difference in Latent Ambition", ylim=c(-1, 1))
abline(h=0, col="grey80", lty=2)
abline(h=0.5, col="grey80", lty=2)
abline(h=-0.5, col="grey80", lty=2)
abline(h=1, col="grey80", lty=2)
abline(h=-1, col="grey80", lty=2)
axis(1, at=c(0.6,1.85,3.15,4.45, 5.65, 6.85), labels=c("Max (Distress) - \nMin (Distress)", "Max (Perspective) - \nMin (Perspective)", "Max (Concern) - \nMin (Concern)", "Women - \nMen", "Independent - \nStrong Partisan", "Lowest Education - \nHighest Education"), cex.axis=0.75)
rug(x.d, side=2)
#dev.off()
